package org.jeecg.modules.friends.user.service;

import java.util.List;

import org.jeecg.modules.friends.enums.BaseInfoStatusEnum;
import org.jeecg.modules.friends.user.dto.DetailEditDTO;
import org.jeecg.modules.friends.user.dto.HomePageUserDTO;
import org.jeecg.modules.friends.user.dto.SelfDetailInfoDTO;
import org.jeecg.modules.friends.user.dto.SysUserDTO;
import org.jeecg.modules.friends.user.dto.SysUserDetailDTO;
import org.jeecg.modules.friends.user.dto.UserDetailInfoDTO;
import org.jeecg.modules.friends.user.dto.UserPicDTO;
import org.jeecg.modules.friends.user.entity.User;
import org.jeecg.modules.friends.user.param.UserParam;
import org.jeecg.modules.friends.user.param.FreezeOperateParam;
import org.jeecg.modules.friends.user.param.HomePageUserRequest;
import org.jeecg.modules.friends.user.param.OperateAuthInfoParam;
import org.jeecg.modules.friends.user.param.SelfDetailInfoEditParam;
import org.jeecg.modules.friends.user.param.UserAuthDetailParam;
import org.jeecg.modules.friends.user.param.UserEditParam;
import org.jeecg.modules.friends.user.param.UserPageParam;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @Description: 用户信息表
 * @Author: jeecg-boot
 * @Date:   2024-05-15
 * @Version: V1.0
 */
public interface IUserService extends IService<User> {

    User getUserByPhone(String phone);

    User registerUser(String phone, String inviteUserId);

    int updateUserInfo(UserEditParam param, User user);

    void updateSelfDescription(String selfDescription, User user);

    void updateFamilyDescription(String familyDescription, User user);
    void updateFullInfo(String lifePartnerRequirements,String familyDescription,String hobbies,String nickName, User user);

    void updateHobbies(String hobbies, User user);

    void updateUserPics(List<UserPicDTO> userPicDTOList, User user);

    HomePageUserDTO recommendUser(HomePageUserRequest request, User user);

    UserDetailInfoDTO getUserDetailInfo(User user);

    User findById(Long toUserId);

    void updateLifePartnerRequirements(String lifePartnerRequirements, User user);

    DetailEditDTO getDetailEditDTO(User user);

    SelfDetailInfoDTO getSelfDetailInfo(User user);

    HomePageUserDTO getDetailInfo(User user, Long userId);

    void updateSelfDetailInfo(SelfDetailInfoEditParam request, User user);

    void updateLocation(User user, String lat, String lng);

    void updateRecommendStatus(User user, boolean b);

    void userLogoff(User user, int type);

    Page<SysUserDTO> userPageList(UserPageParam request);
    Page<HomePageUserDTO> userPageListDetail(UserPageParam request,User currentUser);

    SysUserDetailDTO userAuditDetail(UserAuthDetailParam request);

    void operateUser(FreezeOperateParam param);

    void operateAuthInfo(OperateAuthInfoParam param);

    void cancelUser(UserParam param);

    void closeShowUrl(User user);

    void updateBaseInfoStatus(long userId, BaseInfoStatusEnum baseInfoStatusEnum,String failReason);


}
